package banksimulator.bank;

/**
 * Account工厂接口，用于创建AbstractAccout实例，以及生成帐户的下一个ID。
 * @author Rajab Ma
 */
public interface AccountFactory {

    /**
     * 根据指定的用户名和初始金额建立一个AbstractAccount子类的实例。
     * @param userName 帐户的用户名
     * @param initBalance 帐户的初始金额
     * @return 建立的AbstractAccount子类的实例
     */
    public AbstractAccount create(String userName, double initBalance);

    /**
     * 获取下一个可用的帐户ID。
     * @return 下一个建立的帐户的ID
     */
    public String nextAccountID();
}
